library(openxlsx)
data <- read.xlsx("data.xlsx", colNames = TRUE, detectDates = TRUE)
head(data)
tail(data)
colgate <- ts(data$Colgate, start = 1958, frequency = 52)
crest <- ts(data$Crest, start = 1958, frequency = 52)
mydata <- ts(data[,c(3,4)], start = 1958, frequency = 52)
library(forecast)
library(ggplot2)
library(dplyr)

autoplot(colgate) +
  ggtitle("Colgate Market Shares") +
  xlab("Week") +
  ylab("Market Share")

autoplot(crest) +
  ggtitle("Crest Market Shares") +
  xlab("Week") +
  ylab("Market Share")

autoplot(mydata, facets = TRUE)

autoplot(mydata, facets = FALSE) +
  ggtitle("Cuotas de mercado de Crest y Colgate") +
  xlab("Tiempo") +
  ylab("Cuota de mercado")

ggseasonplot(colgate, month.labels = TRUE, month.labels.left = TRUE) +
  ylab("Market Share") +
  ggtitle("Seasonal plot: Colgate Market Share")


ggseasonplot(crest, week.labels = TRUE, week.labels.left = TRUE) +
  ylab("Market Share") +
  ggtitle("Seasonal plot: Crest Market Share")

ggseasonplot(colgate, polar = TRUE) +
  ylab("Market Share") +
  ggtitle("Seasonal plot: Colgate Market Share")


ggseasonplot(crest, polar = TRUE) +
  ylab("Market Share") +
  ggtitle("Seasonal plot: Crest Market Share")

ggsubseriesplot(colgate) +
  ylab("$ million") +
  ggtitle("Seasonal subseries plot: Colgate Market Share")


ggsubseriesplot(crest) +
  ylab("$ million") +
  ggtitle("Seasonal subseries plot: Crest Market Share")

qplot(crest, colgate) +
  ylab("Colgate market share)") + xlab("Crest market share")

gglagplot(crest)

gglagplot(colgate)

ndiffs(colgate)
[1] 1
ndiffs(crest)
[1] 1
nsdiffs(colgate)
[1] 0
nsdiffs(crest)
[1] 0

Fitting the ARIMA models

Series: colgate 
ARIMA(0,1,1)(1,0,0)[52] 

Coefficients:
          ma1    sar1
      -0.7618  0.0312
s.e.   0.0450  0.0658

sigma^2 estimated as 0.002281:  log likelihood=446.79
AIC=-887.59   AICc=-887.5   BIC=-876.74
Series: crest 
ARIMA(0,1,1) 

Coefficients:
          ma1
      -0.6641
s.e.   0.0431

sigma^2 estimated as 0.002082:  log likelihood=458.98
AIC=-913.97   AICc=-913.92   BIC=-906.73

    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)(1,0,0)[52]
Q* = 47.41, df = 53, p-value = 0.6907

Model df: 2.   Total lags used: 55


    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 40.09, df = 54, p-value = 0.9206

Model df: 1.   Total lags used: 55

Series: colgate 
Regression with ARIMA(0,1,1)(1,0,0)[52] errors 

Coefficients:
          ma1    sar1     TC43    AO102    LS136   TC196
      -0.8593  0.0084  -0.1298  -0.1606  -0.0997  0.1412
s.e.   0.0323  0.0674   0.0345   0.0416   0.0223  0.0344

sigma^2 estimated as 0.001902:  log likelihood=473.57
AIC=-933.15   AICc=-932.73   BIC=-907.83

Outliers:

Series: crest 
Regression with ARIMA(0,1,1) errors 

Coefficients:
          ma1   LS136    AO167    TC196
      -0.7885  0.1646  -0.1427  -0.1322
s.e.   0.0447  0.0263   0.0392   0.0343

sigma^2 estimated as 0.001747:  log likelihood=484.43
AIC=-958.85   AICc=-958.63   BIC=-940.77

Outliers:

         Length Class          Mode   
outliers   5    data.frame     list   
y        276    ts             numeric
yadj     276    ts             numeric
cval       1    -none-         numeric
fit       19    forecast_ARIMA list   
effects  276    ts             numeric
times      3    -none-         numeric
[1]  43 102 136 196
[1] 136 167 196
Series: colgate_outlier$yadj 
ARIMA(0,1,1) 

Coefficients:
          ma1
      -0.8598
s.e.   0.0312

sigma^2 estimated as 0.001867:  log likelihood=473.57
AIC=-943.13   AICc=-943.09   BIC=-935.9
Series: crest_outlier$yadj 
ARIMA(0,1,1) 

Coefficients:
          ma1
      -0.7897
s.e.   0.0430

sigma^2 estimated as 0.001728:  log likelihood=484.43
AIC=-964.86   AICc=-964.81   BIC=-957.62

    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 44.403, df = 54, p-value = 0.8211

Model df: 1.   Total lags used: 55


    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 35.724, df = 54, p-value = 0.974

Model df: 1.   Total lags used: 55

Intervention Model

possible convergence problem: optim gave code=1

Call:
arimax(x = crest, order = c(0, 1, 1), method = "ML", xtransf = data.frame(I1 = (1 * 
    (seq(crest) >= 136))), transfer = list(c(1, 0)))

Coefficients:
Se han producido NaNs
          ma1  I1-AR1  I1-MA0
      -0.7775  0.0401  0.1591
s.e.   0.0437     NaN     NaN

sigma^2 estimated as 0.001896:  log likelihood = 471.15,  aic = -936.31

Training set error measures:
                     ME       RMSE        MAE       MPE     MAPE
Training set 0.00205205 0.04346805 0.03385271 -3.397657 16.76844
                  MASE        ACF1
Training set 0.7955474 -0.01422081


    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 45.428, df = 52, p-value = 0.7283

Model df: 3.   Total lags used: 55


Call:
arimax(x = colgate, order = c(0, 1, 1), method = "ML", xtransf = data.frame(I1 = (1 * 
    (seq(colgate) >= 136))), transfer = list(c(1, 0)))

Coefficients:
          ma1  I1-AR1   I1-MA0
      -0.8091  0.0006  -0.1031
s.e.   0.0412  0.5132   0.0495

sigma^2 estimated as 0.002163:  log likelihood = 453.02,  aic = -900.04

Training set error measures:
                       ME       RMSE        MAE       MPE     MAPE
Training set -0.001964486 0.04641939 0.03643914 -2.941924 12.55462
                  MASE       ACF1
Training set 0.7890364 0.05175557


    Ljung-Box test

data:  Residuals from ARIMA(0,1,1)
Q* = 39.99, df = 52, p-value = 0.888

Model df: 3.   Total lags used: 55

Funcion TRansferencia


Call:
arimax(x = colgate, order = c(1, 0, 0), method = "ML", xtransf = data.frame(crest), 
    transfer = list(c(0, 20)))

Coefficients:
         ar1  intercept  crest-MA0  crest-MA1  crest-MA2  crest-MA3
      0.2349     0.4049    -0.4667    -0.0304    -0.0253     0.0337
s.e.  0.0618     0.0079     0.0546     0.0547     0.0565     0.0581
      crest-MA4  crest-MA5  crest-MA6  crest-MA7  crest-MA8
         0.0715    -0.0238     0.0695    -0.0197    -0.0058
s.e.     0.0583     0.0589     0.0591     0.0592     0.0595
      crest-MA9  crest-MA10  crest-MA11  crest-MA12  crest-MA13
        -0.0081     -0.0163      0.0121      0.0005      0.0619
s.e.     0.0596      0.0596      0.0606      0.0605      0.0607
      crest-MA14  crest-MA15  crest-MA16  crest-MA17  crest-MA18
          0.0214     -0.0533      0.0200      0.0308     -0.0517
s.e.      0.0607      0.0605      0.0599      0.0594      0.0583
      crest-MA19  crest-MA20
          -0.090      0.0954
s.e.       0.057      0.0567

sigma^2 estimated as 0.00157:  log likelihood = 463.15,  aic = -880.31

Call:
arimax(x = colgate, order = c(1, 0, 0), method = "ML", xtransf = data.frame(crest), 
    transfer = list(c(0, 0)))

Coefficients:
         ar1  intercept  crest-MA0
      0.2870     0.4198    -0.4203
s.e.  0.0582     0.0077     0.0268

sigma^2 estimated as 0.0018:  log likelihood = 480.47,  aic = -954.94

z test of coefficients:

            Estimate Std. Error  z value  Pr(>|z|)    
ar1        0.2870442  0.0581593   4.9355 7.995e-07 ***
intercept  0.4198273  0.0077222  54.3665 < 2.2e-16 ***
crest-MA0 -0.4202765  0.0268355 -15.6612 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Series: colgate 
Regression with ARIMA(1,0,0) errors 

Coefficients:
         ar1  intercept     xreg
      0.2870     0.4198  -0.4204
s.e.  0.0581     0.0077   0.0268

sigma^2 estimated as 0.00182:  log likelihood=480.47
AIC=-952.94   AICc=-952.79   BIC=-938.46

LS0tCnRpdGxlOiAnQ2FzbyBQcsOhY3RpY28gMDU6IENvbGdhdGUgdnMgQ3Jlc3QnCnN1YnRpdGxlOiAiTWFzdGVyIGVuIERhdGEgU2NpZW5jZSBwYXJhIEZpbmFuemFzOiBQcmVkaWNjacOzbiIKZGF0ZTogIlxcdGV4dGNvcHlyaWdodCBSaWNhcmRvIEEuIFF1ZXJhbHQgQEN1bmVmIC0gVjIuMDMiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICB0b2M6IHllcwotLS0KCmBgYHtyfQpsaWJyYXJ5KG9wZW54bHN4KQpkYXRhIDwtIHJlYWQueGxzeCgiZGF0YS54bHN4IiwgY29sTmFtZXMgPSBUUlVFLCBkZXRlY3REYXRlcyA9IFRSVUUpCmhlYWQoZGF0YSkKdGFpbChkYXRhKQpgYGAKCgoKYGBge3J9CmNvbGdhdGUgPC0gdHMoZGF0YSRDb2xnYXRlLCBzdGFydCA9IDE5NTgsIGZyZXF1ZW5jeSA9IDUyKQpjcmVzdCA8LSB0cyhkYXRhJENyZXN0LCBzdGFydCA9IDE5NTgsIGZyZXF1ZW5jeSA9IDUyKQpgYGAKCgpgYGB7cn0KbXlkYXRhIDwtIHRzKGRhdGFbLGMoMyw0KV0sIHN0YXJ0ID0gMTk1OCwgZnJlcXVlbmN5ID0gNTIpCmBgYAoKCmBgYHtyfQpsaWJyYXJ5KGZvcmVjYXN0KQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmBgYAoKCgoKYGBge3J9CgphdXRvcGxvdChjb2xnYXRlKSArCiAgZ2d0aXRsZSgiQ29sZ2F0ZSBNYXJrZXQgU2hhcmVzIikgKwogIHhsYWIoIldlZWsiKSArCiAgeWxhYigiTWFya2V0IFNoYXJlIikKYXV0b3Bsb3QoY3Jlc3QpICsKICBnZ3RpdGxlKCJDcmVzdCBNYXJrZXQgU2hhcmVzIikgKwogIHhsYWIoIldlZWsiKSArCiAgeWxhYigiTWFya2V0IFNoYXJlIikKYXV0b3Bsb3QobXlkYXRhLCBmYWNldHMgPSBUUlVFKQphdXRvcGxvdChteWRhdGEsIGZhY2V0cyA9IEZBTFNFKSArCiAgZ2d0aXRsZSgiQ3VvdGFzIGRlIG1lcmNhZG8gZGUgQ3Jlc3QgeSBDb2xnYXRlIikgKwogIHhsYWIoIlRpZW1wbyIpICsKICB5bGFiKCJDdW90YSBkZSBtZXJjYWRvIikKYGBgCgoKCmBgYHtyfQpnZ3NlYXNvbnBsb3QoY29sZ2F0ZSwgbW9udGgubGFiZWxzID0gVFJVRSwgbW9udGgubGFiZWxzLmxlZnQgPSBUUlVFKSArCiAgeWxhYigiTWFya2V0IFNoYXJlIikgKwogIGdndGl0bGUoIlNlYXNvbmFsIHBsb3Q6IENvbGdhdGUgTWFya2V0IFNoYXJlIikKCmdnc2Vhc29ucGxvdChjcmVzdCwgd2Vlay5sYWJlbHMgPSBUUlVFLCB3ZWVrLmxhYmVscy5sZWZ0ID0gVFJVRSkgKwogIHlsYWIoIk1hcmtldCBTaGFyZSIpICsKICBnZ3RpdGxlKCJTZWFzb25hbCBwbG90OiBDcmVzdCBNYXJrZXQgU2hhcmUiKQpgYGAKCgpgYGB7cn0KZ2dzZWFzb25wbG90KGNvbGdhdGUsIHBvbGFyID0gVFJVRSkgKwogIHlsYWIoIk1hcmtldCBTaGFyZSIpICsKICBnZ3RpdGxlKCJTZWFzb25hbCBwbG90OiBDb2xnYXRlIE1hcmtldCBTaGFyZSIpCgpnZ3NlYXNvbnBsb3QoY3Jlc3QsIHBvbGFyID0gVFJVRSkgKwogIHlsYWIoIk1hcmtldCBTaGFyZSIpICsKICBnZ3RpdGxlKCJTZWFzb25hbCBwbG90OiBDcmVzdCBNYXJrZXQgU2hhcmUiKQpgYGAKCgpgYGB7cn0KZ2dzdWJzZXJpZXNwbG90KGNvbGdhdGUpICsKICB5bGFiKCIkIG1pbGxpb24iKSArCiAgZ2d0aXRsZSgiU2Vhc29uYWwgc3Vic2VyaWVzIHBsb3Q6IENvbGdhdGUgTWFya2V0IFNoYXJlIikKCmdnc3Vic2VyaWVzcGxvdChjcmVzdCkgKwogIHlsYWIoIiQgbWlsbGlvbiIpICsKICBnZ3RpdGxlKCJTZWFzb25hbCBzdWJzZXJpZXMgcGxvdDogQ3Jlc3QgTWFya2V0IFNoYXJlIikKYGBgCgoKYGBge3J9CnFwbG90KGNyZXN0LCBjb2xnYXRlKSArCiAgeWxhYigiQ29sZ2F0ZSBtYXJrZXQgc2hhcmUpIikgKyB4bGFiKCJDcmVzdCBtYXJrZXQgc2hhcmUiKQpgYGAKCgpgYGB7cn0KZ2dsYWdwbG90KGNyZXN0KQpnZ2xhZ3Bsb3QoY29sZ2F0ZSkKYGBgCgpgYGB7cn0KbmRpZmZzKGNvbGdhdGUpCm5kaWZmcyhjcmVzdCkKYGBgCgoKYGBge3J9Cm5zZGlmZnMoY29sZ2F0ZSkKbnNkaWZmcyhjcmVzdCkKYGBgCgojIEZpdHRpbmcgdGhlIEFSSU1BIG1vZGVscwoKCmBgYHtyfSAKKGZpdF9jb2xnYXRlIDwtIGF1dG8uYXJpbWEoY29sZ2F0ZSwgc2Vhc29uYWwgPSBUUlVFKSkKKGZpdF9jcmVzdCA8LSBhdXRvLmFyaW1hKGNyZXN0LCBzZWFzb25hbCA9IFRSVUUpKQpgYGAKCmBgYHtyfQpjaGVja3Jlc2lkdWFscyhmaXRfY29sZ2F0ZSkKY2hlY2tyZXNpZHVhbHMoZml0X2NyZXN0KQpgYGAKCgpgYGB7cn0KZml0X2NvbGdhdGUgJT4lIGZvcmVjYXN0KGggPSAxNikgJT4lIGF1dG9wbG90KCkKZml0X2NyZXN0ICU+JSBmb3JlY2FzdChoID0gMTYpICU+JSBhdXRvcGxvdCgpCmBgYAoKCmBgYHtyfQpsaWJyYXJ5KHRzb3V0bGllcnMpCihjb2xnYXRlX291dGxpZXIgPC0gdHNvKGNvbGdhdGUsIHR5cGVzID0gYygiVEMiLCAiQU8iLCAiTFMiLCAiSU8iLCAiU0xTIikpKQpwbG90KGNvbGdhdGVfb3V0bGllcikKYGBgCiAgCmBgYHtyfQooY3Jlc3Rfb3V0bGllciA8LSB0c28oY3Jlc3QsIHR5cGVzID0gYygiVEMiLCAiQU8iLCAiTFMiLCAiSU8iLCAiU0xTIikpKQpwbG90KGNyZXN0X291dGxpZXIpCnN1bW1hcnkoY3Jlc3Rfb3V0bGllcikKYGBgCmBgYHtyfQoob3V0bGllcnNfY29sZ2F0ZV9pZHggPC0gY29sZ2F0ZV9vdXRsaWVyJG91dGxpZXJzJGluZCkKKG91dGxpZXJzX2NyZXN0X2lkeCA8LSBjcmVzdF9vdXRsaWVyJG91dGxpZXJzJGluZCkKYGBgCgoKYGBge3J9CihmaXRfY29sZ2F0ZV9vdXRsaWVyIDwtIGF1dG8uYXJpbWEoY29sZ2F0ZV9vdXRsaWVyJHlhZGosIHNlYXNvbmFsID0gVFJVRSkpCihmaXRfY3Jlc3Rfb3V0bGllciA8LSBhdXRvLmFyaW1hKGNyZXN0X291dGxpZXIkeWFkaiwgc2Vhc29uYWwgPSBUUlVFKSkKYGBgCgoKYGBge3J9CmNoZWNrcmVzaWR1YWxzKGZpdF9jb2xnYXRlX291dGxpZXIpCmNoZWNrcmVzaWR1YWxzKGZpdF9jcmVzdF9vdXRsaWVyKQpgYGAKICAKICAKYGBge3J9CmZpdF9jb2xnYXRlX291dGxpZXIgJT4lIGZvcmVjYXN0KGggPSAxNikgJT4lIGF1dG9wbG90KCkKZml0X2NyZXN0X291dGxpZXIgJT4lIGZvcmVjYXN0KGggPSAxNikgJT4lIGF1dG9wbG90KCkKYGBgCgoKIyBJbnRlcnZlbnRpb24gTW9kZWwKCmBgYHtyfQpsaWJyYXJ5KFRTQSkKYGBgCgogIApgYGB7cn0KCmFyaW1heF9tb2RlbF9jcmVzdCA8LSBhcmltYXgoY3Jlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgPSBjKDAsMSwxKSwgI29yZGVuIGRlbCBBUklNQQogICAgICAgICAgICAgICAgICAgICAgIHh0cmFuc2YgPSBkYXRhLmZyYW1lKEkxID0gKDEqKHNlcShjcmVzdCkgPj0gMTM2KSkpLCAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciA9IGxpc3QoYygxLDApKSwgCiAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gJ01MJykKCnN1bW1hcnkoYXJpbWF4X21vZGVsX2NyZXN0KQphdXRvcGxvdChmaXR0ZWQoYXJpbWF4X21vZGVsX2NyZXN0KSkrYXV0b2xheWVyKGNyZXN0KQpgYGAKCgpgYGB7cn0KY2hlY2tyZXNpZHVhbHMoYXJpbWF4X21vZGVsX2NyZXN0KQpgYGAKCgpgYGB7cn0KCmVzY2Fsb249KEkxID0gKDEqKHNlcShjcmVzdCkgPj0gMTM2KSkpCncwPWFzLm51bWVyaWMoYXJpbWF4X21vZGVsX2NyZXN0JGNvZWZbIkkxLU1BMCJdKQpkMT1hcy5udW1lcmljKGFyaW1heF9tb2RlbF9jcmVzdCRjb2VmWyJJMS1BUjEiXSkKCgpwbG90KHRzKHN0YXRzOjpmaWx0ZXIoZXNjYWxvbixmaWx0ZXI9ZDEsbWV0aG9kPSdyZWN1cnNpdmUnLHNpZGU9MSkqdzAsCmZyZXF1ZW5jeT01MixzdGFydD0xOTU4KSx0eXBlPSdoJyx5bGFiPScnKQphYmxpbmUoaD0wKQoKYGBgCgoKCiAgCmBgYHtyfQoKYXJpbWF4X21vZGVsX2NvbGdhdGUgPC0gYXJpbWF4KGNvbGdhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgPSBjKDAsMSwxKSwgI29yZGVuIGRlbCBBUklNQQogICAgICAgICAgICAgICAgICAgICAgIHh0cmFuc2YgPSBkYXRhLmZyYW1lKEkxID0gKDEqKHNlcShjb2xnYXRlKSA+PSAxMzYpKSksICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyID0gbGlzdChjKDEsMCkpLCAKICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAnTUwnKQoKc3VtbWFyeShhcmltYXhfbW9kZWxfY29sZ2F0ZSkKYXV0b3Bsb3QoZml0dGVkKGFyaW1heF9tb2RlbF9jb2xnYXRlKSkrYXV0b2xheWVyKGNvbGdhdGUpCmBgYAoKCmBgYHtyfQpjaGVja3Jlc2lkdWFscyhhcmltYXhfbW9kZWxfY29sZ2F0ZSkKYGBgCgoKYGBge3J9Cgplc2NhbG9uPShJMSA9ICgxKihzZXEoY29sZ2F0ZSkgPj0gMTM2KSkpCncwPWFzLm51bWVyaWMoYXJpbWF4X21vZGVsX2NvbGdhdGUkY29lZlsiSTEtTUEwIl0pCmQxPWFzLm51bWVyaWMoYXJpbWF4X21vZGVsX2NvbGdhdGUkY29lZlsiSTEtQVIxIl0pCgoKcGxvdCh0cyhzdGF0czo6ZmlsdGVyKGVzY2Fsb24sZmlsdGVyPWQxLG1ldGhvZD0ncmVjdXJzaXZlJyxzaWRlPTEpKncwLApmcmVxdWVuY3k9NTIsc3RhcnQ9MTk1OCksdHlwZT0naCcseWxhYj0nJykKYWJsaW5lKGg9MCkKCmBgYAoKCiMgRnVuY2lvbiBUUmFuc2ZlcmVuY2lhCgoKYGBge3J9Cm1vZC50cmFuc2YuY29sZ2F0ZSA8LSBhcmltYXgoeCA9IGNvbGdhdGUsIG9yZGVyID0gYygxLCAwLCAwKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh0cmFuc2YgPSBkYXRhLmZyYW1lKGNyZXN0KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyID0gbGlzdChjKDAsMjApKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJNTCIpCm1vZC50cmFuc2YuY29sZ2F0ZQoKYGBgCgoKCmBgYHtyfQptb2QudHJhbnNmLmNvbGdhdGUgPC0gYXJpbWF4KHggPSBjb2xnYXRlLCBvcmRlciA9IGMoMSwgMCwgMCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4dHJhbnNmID0gZGF0YS5mcmFtZShjcmVzdCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciA9IGxpc3QoYygwLDApKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJNTCIpCm1vZC50cmFuc2YuY29sZ2F0ZQoKYGBgCgoKYGBge3J9CmxpYnJhcnkobG10ZXN0KQpjb2VmdGVzdChtb2QudHJhbnNmLmNvbGdhdGUpCmBgYAoKYGBge3J9Cihtb2QxIDwtIEFyaW1hKGNvbGdhdGUsIG9yZGVyID0gYygxLCAwLCAwKSwgeHJlZyA9IGNyZXN0KSkKCmBgYAoKYGBge3J9CnhuZXcgPC0gZml0X2NyZXN0ICU+JSBmb3JlY2FzdChoID0gOCkKbW9kMSAlPiUgZm9yZWNhc3QoaCA9IDgseHJlZz14bmV3JG1lYW4pICU+JSBhdXRvcGxvdCgpCmBgYAoK